Integrated circuits having programmable resources are designed to enable users to implement logic designs of their choice. Programmable resources may comprise gates which are configurable by a user of the circuit to implement a circuit design of the user. For integrated circuits having programmable resources, the functionality of the integrated circuit is controlled by configuration data bits of a configuration bitstream provided to the integrated circuit. These integrated circuits typically have different modes depending on the operations being performed on them, where a specific protocol allows the integrated circuit to enter into the appropriate mode. During a “program” mode, a configuration bitstream is provided to non-volatile memory associated with the integrated circuit. During system power up of a “startup” mode, the configuration bits are successively loaded from the non-volatile memory into static random access memory (SRAM) configuration latches of configuration logic blocks.
Conventional integrated circuits having programmable resources also enable partial reconfiguration. Work has been done on the specification and synthesis of such integrated circuits. For example, design and verification for capturing dynamically reconfigurable behavior has been performed. Further, the synthesis of a reconfiguration controller from a system specification has been reported. However, such systems have considerable disadvantages.